/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.cardapiodigital.data;

import br.com.cardapiodigital.database.ConnectionManager;
import br.com.cardapiodigital.entity.TipodeCozinhas;
import br.com.cardapiodigital.exception.CardapioDigitalException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author egberto
 */
public class TipodeCozinhasData extends GenericData<TipodeCozinhas> {

    @Override
    public void salvar(TipodeCozinhas entity) throws CardapioDigitalException {
        PreparedStatement pstmt = null;
        Connection conn = null;
        
        String sql = "INSERT INTO tipodecozinhas (descricao) values (?)";    
        
        try{
            conn = ConnectionManager.getConexao();
            pstmt = conn.prepareStatement(sql);
            // preenche os valores ?,?
            pstmt.setString(1, entity.getDescricao());
           
            pstmt.execute();
            
        }catch(SQLException ex){
            Logger.getLogger(TipodeCozinhasData.class.getName()).
                    log(Level.SEVERE, null, ex);
            String errorMsg = "Erro na execucao da query" + sql;
            throw new CardapioDigitalException(errorMsg, ex);
        }finally{
            ConnectionManager.close(conn, pstmt);
        }
    }

    @Override
    public void atualizar(TipodeCozinhas entity) throws CardapioDigitalException {
        PreparedStatement pstmt = null;
        Connection conn = null;
        
        String sql = "UPDATE tipodecozinhas SET descricao = ? WHERE id = ?";    
        
        try{
            conn = ConnectionManager.getConexao(); 
            pstmt = conn.prepareStatement(sql);
            // preenche os valores ?,?
            pstmt.setInt(1, entity.getId());
            
            pstmt.execute();
            
        }catch(SQLException ex){
            Logger.getLogger(TipodeCozinhasData.class.getName()).
                    log(Level.SEVERE, null, ex);
            String errorMsg = "Erro na execucao da query" + sql;
            throw new CardapioDigitalException(errorMsg, ex);
        }finally{
            ConnectionManager.close(conn, pstmt);
        }
    }

    @Override
    public void excluir(int entityId) throws CardapioDigitalException {
        PreparedStatement pstmt = null;
        Connection conn = null;
        
        String sql = "DELETE FROM tipodecozinhas WHERE id=?";    
        
        try{
            conn = ConnectionManager.getConexao(); 
            pstmt = conn.prepareStatement(sql);
            // preenche os valores ?,?
            pstmt.setInt(1, entityId);           
            
            pstmt.execute();
            
        }catch(SQLException ex){
            Logger.getLogger(TipodeCozinhasData.class.getName()).
                    log(Level.SEVERE, null, ex);
            String errorMsg = "Erro na execucao da query" + sql;
            throw new CardapioDigitalException(errorMsg, ex);
        }finally{
            ConnectionManager.close(conn, pstmt);
        }
        
    }

    @Override
    public List<TipodeCozinhas> buscarTodos() throws CardapioDigitalException {
        String sql = "SELECT * FROM tipodecozinhas ORDER BY descricao ASC";
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        List<TipodeCozinhas> listaTCozinhas = new ArrayList<TipodeCozinhas>();
        
        try{
            conn = ConnectionManager.getConexao();
            stmt =  conn.createStatement();
            rs = stmt.executeQuery(sql);
            
            while(rs.next()){
                int id = rs.getInt("id");
                String descricao = rs.getString("descricao");
                listaTCozinhas.add(new TipodeCozinhas(id,descricao));
            }
            
            return listaTCozinhas;
        
        }catch(SQLException ex){
            Logger.getLogger(EstadosData.class.getName()).
                    log(Level.SEVERE, null, ex);
            String errorMsg = "Erro na execucao da query" + sql;
            throw new CardapioDigitalException(errorMsg, ex);
        }finally{
            ConnectionManager.close(conn,stmt,rs);
        }
        
    }

    @Override
    public TipodeCozinhas obtem(String entityId) throws CardapioDigitalException {
        String sql = "SELECT * FROM tipodecozinhas WHERE descricao='" + entityId + "'";        
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        TipodeCozinhas tCozinhas = null;
        
        
        try{
            conn = ConnectionManager.getConexao();
            stmt =  conn.createStatement();  
            rs = stmt.executeQuery(sql);
            
            if(rs.next()){
                int id = rs.getInt("id");
                String descricao = rs.getString("descricao");
                tCozinhas = new TipodeCozinhas(id,descricao);
            }
            
            return tCozinhas;
        
        }catch(SQLException ex){
            Logger.getLogger(EstadosData.class.getName()).
                    log(Level.SEVERE, null, ex);
            String errorMsg = "Erro na execucao da query " + sql;
            throw new CardapioDigitalException(errorMsg, ex);
        }finally{
            ConnectionManager.close(conn,stmt,rs);
        }
    }
}
